#!/bin/bash

# the `bash` shebang is deliberate: only bash can exhibit the bug, so pinning
# it keeps this meaningful in every job of the shell matrix

die () { echo "$@" ; cleanup ; exit 1; }
cleanup () {
  set -h
  rm -f "${OUTPUT_FILE-}"
}

export NVM_DIR="$(cd ../.. && pwd)"

: nvm.sh
\. ../../nvm.sh
\. ../common.sh

make_fake_node v0.2.3 || die 'unable to make fake node'

OUTPUT_FILE="$(mktemp)"

set +h

# not in a command substitution, so the `PATH` it sets survives to `nvm deactivate`
nvm use --delete-prefix v0.2.3 > "${OUTPUT_FILE}" 2>&1
OUTPUT="$(cat "${OUTPUT_FILE}")"
case "${OUTPUT}" in
  *'hash: '*) die "nvm use complained about hashing: ${OUTPUT}" ;;
esac
case "${OUTPUT}" in
  *'Now using node v0.2.3'*) ;;
  *) die "nvm use did not activate v0.2.3: ${OUTPUT}" ;;
esac

nvm deactivate > "${OUTPUT_FILE}" 2>&1
OUTPUT="$(cat "${OUTPUT_FILE}")"
case "${OUTPUT}" in
  *'hash: '*) die "nvm deactivate complained about hashing: ${OUTPUT}" ;;
esac
case "${OUTPUT}" in
  *'removed from ${PATH}'*) ;;
  *) die "nvm deactivate did not strip the nvm bin dir: ${OUTPUT}" ;;
esac

cleanup
